<a (click)="edit()">
  <i nz-icon nzType="plus"></i>
  添加
</a>

<nz-row [nzGutter]="[8,8]" cdkDropList (cdkDropListDropped)="drop($event)">
  <div nz-col [nzSpan]="12" [nzXs]="24" [nzSm]="12" [nzMd]="12" [nzLg]="8" [nzXl]="6" [nzXXl]="4"
       *ngFor="let data of items; let i=index" cdkDrag>
    <nz-card nzSize="small" nzHoverable [nzExtra]="extraTemplate" (click)="edit(data)">
      <p>目标：{{data.targets.join(',')}}</p>
      <p>
        {{data.as}} = {{data.type}} {{data.expression}}
      </p>
    </nz-card>
    <ng-template #extraTemplate>
      <a title="移动" cdkDragHandle>
        <i nz-icon nzType="drag" nzTheme="outline"></i>
      </a>
      <nz-divider nzType="vertical"></nz-divider>
      <a title="复制" (click)="copy(i); $event.stopPropagation()">
        <i nz-icon nzType="copy" nzTheme="outline"></i>
      </a>
      <nz-divider nzType="vertical"></nz-divider>
      <a title="删除" nz-popconfirm nzPopconfirmTitle="确定删除?" (nzOnConfirm)="remove(i)" (click)="$event.stopPropagation()">
        <i nz-icon nzType="delete" nzTheme="outline"></i>
      </a>
    </ng-template>
  </div>
</nz-row>

<nz-modal [(nzVisible)]="showModal" nzTitle="编辑计算器" (nzOnOk)="onOk()" (nzOnCancel)="showModal=false">
  <ng-container *nzModalContent>
    <form [formGroup]="formGroup">

      <nz-form-item>
        <nz-form-label [nzSpan]="5">类型</nz-form-label>
        <nz-form-control [nzSpan]="12" nzErrorTip="">
          <nz-select formControlName="type">
            <nz-option nzValue="SUM" nzLabel="求和"></nz-option>
            <nz-option nzValue="AVG" nzLabel="均值"></nz-option>
            <nz-option nzValue="COUNT" nzLabel="计数"></nz-option>
            <nz-option nzValue="MIN" nzLabel="最小"></nz-option>
            <nz-option nzValue="MAX" nzLabel="最大"></nz-option>
            <nz-option nzValue="FIRST" nzLabel="最前"></nz-option>
            <nz-option nzValue="LAST" nzLabel="最后"></nz-option>
          </nz-select>
        </nz-form-control>
      </nz-form-item>

      <nz-form-item>
        <nz-form-label [nzSpan]="5">目标</nz-form-label>
        <nz-form-control [nzSpan]="12" nzErrorTip="">
          <nz-select nzAllowClear nzMode="tags" [nzTokenSeparators]="[',', '，', ';', ' ']"
                     formControlName="targets" nzSize="small"></nz-select>
        </nz-form-control>
      </nz-form-item>

      <nz-form-item>
        <nz-form-label [nzSpan]="5">变量</nz-form-label>
        <nz-form-control [nzSpan]="12" nzErrorTip="">
          <input nz-input formControlName="as" required/>
        </nz-form-control>
      </nz-form-item>

      <nz-form-item>
        <nz-form-label [nzSpan]="5">表达式</nz-form-label>
        <nz-form-control [nzSpan]="12" nzErrorTip="">
          <input nz-input formControlName="expression" required/>
        </nz-form-control>
      </nz-form-item>

    </form>
  </ng-container>
</nz-modal>
